EXEC=parser
INPUT_DYN=../trace/dynamic_trace
INPUT_STAT=../trace/static_trace
INPUT_GLOBAL=../trace/global_trace
CC=gcc
CXX=g++
CXXFLAGS=-std=c++11


all: $(EXEC) run
.PHONY: clean


lex.yy.c: token.l
	lex token.l

y.tab.cpp: grammar.y tools.hpp
	yacc -d grammar.y -o$@

lex.yy.o: lex.yy.c y.tab.cpp
	$(CC) -c $< -o $@

$(EXEC): lex.yy.o y.tab.cpp
	$(CXX) $^ -o $@ $(CXXFLAGS)

run: $(EXEC)
	cat $(INPUT_STAT) > $(INPUT_GLOBAL)
	cat $(INPUT_DYN) >> $(INPUT_GLOBAL)
	cat $(INPUT_GLOBAL) | ./$(EXEC)
	make -C ./plotter/

clean:
	rm -f lex.yy.* y.tab.* $(EXEC)
	rm -f data/*
	rm -f plotter/plotter.gp
	rm -f $(INPUT_GLOBAL)
	make -C ./plotter/ clean
